package ch.zbw.vokabeltrainer.logik;
/**
 * Diese Klasse dient als Methodeklasse für die GUI Anbindung in dieser Klasse werden alle Methoden geschrieben die für das GUI verwendet werden
 * 
 * @author brunofliri
 *
 */
public class IO {
	
	private Management man;// verknüpfung zur Managememt Klasse
	/**
	 * Dieser Konstrulter erstellt ein neuese Management-Object
	 */
	public IO(){
		man = new Management();
	}
	
	/**
	 * Diese Methode gibt die aktuelle Benutzerliste in einem String Array zurueck
	 * 
	 * @return Benutzer Array String
	 */
	public String[] getBenutzerListe(){
		return man.getBenutzerListe();	
	}
	/**
	 * Diese Methode gibt alle Sprachkombinationen des Aktuellen benutzers zurueck falls eine Benutzer soeben erstellt wurde.
	 * Ansonsten wird der letzter in der Benutzerliste verwendet.
	 * 
	 * @return Sprachenkombinationen Array String
	 */
	public String[] getSprachenKomb(){
		return man.getSprachenKomb();
	}
	
	/**
	 * Diese Methode gibt alle LernThemas zurueck von der Aktuellen Sprachkombination zurueck falls eine soeben erstellt wurde.
	 * Ansonsten wird der Letzte eintrag der Sprachkombination verwendet.
	 * 
	 * @return LernThemaListe Array String
	 */
	public String[] getThemaListe(){
		return man.getThemaListe();
	}
	
	/**
	 * Erstellt einen neuen Benutzer und aktualsiert die AktiverBenutzerVariable fuer diesen neu erstellten Benutzer.
	 * 
	 * @param benutzerName String
	 * @return erfolgreich true oder false Benutzer schon vorhanden
	 */
	public boolean newBenutzer(String benutzerName){
		return man.newBenutzerDB(benutzerName);
	}
	/**
	 * Erstellt einen neue Sprachkombination und aktualsiert die Referenz fuer die neu erstellten Sprachkombination im Management.
	 * 
	 * @param sprachenKomb
	 * @return erfolgreich erstellt true oder false fuer Sprache schon vorhanden
	 */
	public boolean newSprachenKomb(String sprachenKomb){
		return man.newSprachenKombErstellenDB(sprachenKomb);
	}
	/**
	 * Erstellt ein neuse Lernthema und aktualisiert die Aktiverefernz des aktuellen Thema im Management.
	 * 
	 * @param thema
	 * @return erfolgreich erstel true oder false fuer schon vorhanden
	 */
	public boolean newThema(String thema){
		return man.newThemaErstellenDB(thema);
	}
	/**
	 * Dies Methode erstellt eine Neue Karteikarte in dem aktuellen Thema
	 * 
	 * @param sprache1 Ausgangssprache String
	 * @param sprache2 Lehrnsprache String
	 */
	public void newKarteikarte(String sprache1, String sprache2){
		man.newKarteikarteErstellen(sprache1, sprache2);
	}
	/**
	 * Setzt den aktuellen Benutzer im Management für die weitern Schritte
	 * 
	 * @param gewaehlterBenutzer String
	 */
	public void setgwaehlterBenutzer(String gewaehlterBenutzer){
		man.benutzerIndexSetzen(gewaehlterBenutzer);
	}
	/**
	 * Setzt die aktuelle Sprachkombination im Management für weiter Schritte
	 * 
	 * @param gewaehlteSprachKomb String
	 */
	public void setgewaehlteSprachenKomb(String gewaehlteSprachKomb){
		man.sprachenKombAktualisieren(gewaehlteSprachKomb);
	}
	/**
	 *Setzt das aktuelle Thema im Management für weiter Schritte
	 * 
	 * @param gewaehltesThema String
	 */
	public void setgewaehltesThema(String gewaehltesThema){
		man.themaAktualisieren(gewaehltesThema);
	}
	/**
	 * Diese  Methode gibt das Nechste abfrage Wort zurueck
	 * 
	 * @return AbfrageWort String
	 */
	public String getNechsteKarte(){
		return man.nechsteKarte();
	}
	/**
	 * Diese Methode kontrolliert das eingegebene Wort
	 * und gibt eine true fuer richtig und fals fuer eine falsche eingabe
	 * 
	 * @param text ueberpruefungsWort String
	 * @return true für Richtig oder false für Falsch boolean
	 */
	public boolean kontrolle(String text){
		return man.kontrolle(text);
	}
	/**
	 * Gibt eine Komplettes Array hinauf mit allen Woertern im bestehendem Thema
	 * 
	 * @return Wortliste Array
	 */
	public String[][] getWortliste(){
		return man.getWortliste();
	}
	/**
	 * Gibt das momentane Aktive Wort wieder zurueck
	 * Gibt die Abfrage  zurueck
	 * 
	 * @return Wortabfrage String
	 */
	public String getAktuellesWort(){
		return man.getAktuellesWort();
	}
	/**
	 * Gibt das Lösungswort zurück
	 * 
	 * @return lösungswort String
	 */
	public String getLoesungsWort(){
		return man.getLoesungWort();
	}
	/**
	 * Löscht das eingegebene Wort auf der Datenbank
	 * 
	 * @param wortSprache1 Ausgangssprache String
	 * @param wortSprache2 Lernsprache String
	 */
	public void wortLoeschen(String wortSprache1,String wortSprache2){
		man.wortloeschen(wortSprache1, wortSprache2);
	}
	/**
	 * Gibt den Aktuellen Benutzername zurück
	 * 
	 * @return benutzerName String
	 */
	public String getaktBenutzer(){
		return man.getAktBenutzerName();
	}
	/**
	 * Gibt die Aktuelle Sprachkombination zurück
	 * 
	 * @return sprachKombination String
	 */
	public String getaktSprache(){
		return man.getAktSprache();		
	}
	/**
	 * Gibt aktuelles Thema zurück
	 * 
	 * @return thema String
	 */
	public String getaktThema(){
		return man.getAktThema();
	}
	/**
	 * Löscht das dewählte Thema von der Datenbank
	 * 
	 * @param thema String
	 */
	public void setThemaloeschen(String thema){
		man.themaloeschen(thema);
	}
	/**
	 * Löscht die gewählte SprachenKombination auf der Datenbank
	 * 
	 * @param sprache
	 */
	public void setSpracheloeschen(String sprache){
		man.spracheloeschen(sprache);
	}
	/**
	 * Löschte den gewählten Benutzer auf der Datenbank
	 * 
	 * @param benutzer
	 */
	public void setBenutzerloeschen(String benutzer){
		man.benutzerloeschen(benutzer);
	}
	/**
	 * Exportiert alle vom Aktiven Thema wöter in den gewählten Dateipfad
	 * 
	 * @param pfad = Dataipfad
	 */
	public void woerterExportieren(String pfad) {
		man.woerterExportieren(pfad);
	}
	/**
	 * Importiert alle wörter in das Aktuelle Thema
	 * 
	 * @param pfad = Dateipfad
	 */
	public void woerterImportieren(String pfad) {
		man.woerterImportieren(pfad);
	}
}
